package netty;

import java.net.InetAddress;

import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;
import io.netty.channel.group.ChannelGroup;
import io.netty.channel.group.DefaultChannelGroup;
import io.netty.handler.codec.http.websocketx.TextWebSocketFrame;
import io.netty.handler.codec.http.websocketx.WebSocketFrame;
import io.netty.util.concurrent.GlobalEventExecutor;

public class HelloServerHandler extends SimpleChannelInboundHandler<WebSocketFrame> {

    public static ChannelGroup group = new DefaultChannelGroup(GlobalEventExecutor.INSTANCE);


    /*
//     *
//     * 覆盖 channelActive 方法 在channel被启用的时候触发 (在建立连接的时候)
//     *
//     * channelActive 和 channelInActive 在后面的内容中讲述，这里先不做详细的描述
//     * */
//    @Override
//    public void channelActive(ChannelHandlerContext ctx) throws Exception {
//
//        System.out.println("客户端: " + ctx.channel().remoteAddress() + " 上线 !");
//
//        ctx.writeAndFlush( "你好，"+ctx.channel().remoteAddress()+"\n");
//        ctx.writeAndFlush( "欢迎来到 " + InetAddress.getLocalHost().getHostName() + " 服务器!\n");
//
//        super.channelActive(ctx);
//    }
//
////    @Override
////    protected void messageReceived(ChannelHandlerContext ctx, String msg) throws Exception {
////        // 收到消息直接打印输出
////        System.out.println(ctx.channel().remoteAddress() + " 信息 : " + msg);
////
////        // 返回客户端消息 - 我已经接收到了你的消息
////        ctx.writeAndFlush("服务器已收到你的信息："+msg+"\n");
////        group.writeAndFlush(ctx.channel().remoteAddress()+":"+msg+"\n");
////    }
//
//    @Override
//    public void handlerAdded(ChannelHandlerContext ctx) throws Exception {
//        //把每个连接过来的客户端添加到 ChannelGroup 中，用于消息群发
//        group.add(ctx.channel());
//        super.handlerAdded(ctx);
//        group.writeAndFlush("欢迎加入\n");
//    }


//    @Override
    protected void messageReceived(ChannelHandlerContext channelHandlerContext, WebSocketFrame webSocketFrame)  {
        try {
            System.out.println("hhh");
            if (webSocketFrame instanceof TextWebSocketFrame) {
                System.out.println(((TextWebSocketFrame) webSocketFrame).text());
            }
        }catch (Exception e){
            e.printStackTrace();
        }

    }

    @Override
    protected void channelRead0(ChannelHandlerContext channelHandlerContext, WebSocketFrame webSocketFrame) throws Exception {

    }
}